A NAND flash memory is known as one of nonvolatile semiconductor memory devices (EEPROM) that can be rewritten electrically. A technique for increasing the data storage capacity of the NAND flash memory includes a multi-level storage method in which a threshold value distribution of a memory cell is subdivided so that the memory cell can store a plurality of bit data (multi-level data).
When charge is injected into a charge storage layer of a memory cell in a NAND flash memory, the potential of a charge storage layer of an adjacent memory cell that was written before this memory cell may be changed (inter-cell interference effect). As a result, a threshold value of the adjacent memory cell originally written may be shifted. This problem becomes more serious in a multi-level memory having a narrow threshold distribution for each piece of data to be written.